Release 10.1A: OpenEdge Development:
Progress Dynamics Advanced Development
Instantiation order for super procedures
Before you customize the appropriate procedure file and define customization in the Progress Dynamics Repository, you should review and set the instantiation order of the super procedures.
When an object is started, all of the super procedures associated with the object’s class and its inherited classes are added to its stack. These super procedures are based on the value of the
SuperProcedureattribute in the Repository. The order of the instantiation of these super procedures is based on the class hierarchical structure.The following code illustrates what a typical stack for a dynamic viewer might look like:
If you extend a class in the middle of the hierarchy, it is important that you define your class in the Repository and
assigntheSuperProcedureattribute. For example, if you extend the DataVisual and Viewer class, you might have customized proceduresdatavisualcustom.pandviewercustom.p. You would then have to create custom classes for both of these classes, to extend the hierarchy, and specify these super procedures in theSuperProcedureattribute. The stack might appear as it does in the following code:
If you want to run the static objects in both a Progress Dynamics and non-Progress Dynamics environment, or if you want to run static objects in both a dynamic and static container, you must modify the ADM code to maintain the customization.
The class include files conditionally run the custom super procedures based on the value of the preprocessor
ADM-LOAD-FROM-REPOSITORY. This ensures that you only run the super procedure if it has not already been loaded from the Repository. If you want your code to behave this way, you must add the following code:
If you do not qualify the starting of the super procedure, all of the custom super procedures are added on top of the stack, as shown in the following code:
|
Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |